package com.shuda.common.utils;

import io.swagger.v3.oas.annotations.media.Schema;

import java.util.List;

/**
 * 分页结果类
 * 提供列表数据、总条数、当前页、每页大小、总页数等信息
 */
@Schema(description = "分页结果")
public class PageResult<T> {

    @Schema(description = "数据列表")
    private List<T> records;

    @Schema(description = "总记录数")
    private Long total;

    @Schema(description = "当前页码")
    private Long current;

    @Schema(description = "每页大小")
    private Long size;

    @Schema(description = "总页数")
    private Long pages;

    /**
     * 无参构造
     */
    public PageResult() {
    }

    /**
     * 三参构造（兼容旧用法）：列表、总数、总页数
     * @param records 数据列表
     * @param total 总记录数
     * @param pages 总页数
     */
    public PageResult(List<T> records, Long total, Long pages) {
        this.records = records;
        this.total = total;
        this.pages = pages;
    }

    /**
     * 四参构造：列表、总数、当前页、每页大小
     * @param records 数据列表
     * @param total 总记录数
     * @param current 当前页码
     * @param size 每页大小
     */
    public PageResult(List<T> records, Long total, Long current, Long size) {
        this.records = records;
        this.total = total;
        this.current = current;
        this.size = size;
    }

    /**
     * 获取数据列表
     * @return 数据列表
     */
    public List<T> getRecords() {
        return records;
    }

    /**
     * 设置数据列表
     * @param records 数据列表
     */
    public void setRecords(List<T> records) {
        this.records = records;
    }

    /**
     * 获取总记录数
     * @return 总记录数
     */
    public Long getTotal() {
        return total;
    }

    /**
     * 设置总记录数
     * @param total 总记录数
     */
    public void setTotal(Long total) {
        this.total = total;
    }

    /**
     * 获取当前页码
     * @return 当前页码
     */
    public Long getCurrent() {
        return current;
    }

    /**
     * 设置当前页码
     * @param current 当前页码
     */
    public void setCurrent(Long current) {
        this.current = current;
    }

    /**
     * 获取每页大小
     * @return 每页大小
     */
    public Long getSize() {
        return size;
    }

    /**
     * 设置每页大小
     * @param size 每页大小
     */
    public void setSize(Long size) {
        this.size = size;
    }

    /**
     * 获取总页数
     * @return 总页数
     */
    public Long getPages() {
        return pages;
    }

    /**
     * 设置总页数
     * @param pages 总页数
     */
    public void setPages(Long pages) {
        this.pages = pages;
    }
}